package stars.enums;

import java.util.ArrayList;
import java.util.HashMap;

/*
 * Holds max/min and system probability data for each type of star in-game
 */
public class StarTypeData {
	
	private String name;
	
	private double youngProb;
	private double averageProb;
	private double oldProb;	
	
	private double maxLuminance; //LSun
	private double minLuminance;
	
	private double maxTemp; //K
	private double minTemp;
	
	private double maxMass; //MSun
	private double minMass; 
	
	private double maxRadius; //RSun
	private double minRadius;
	
	private double maxRotation; //rad/sec
	private double minRotation;
	
	private double maxMagField; //Gauss
	private double minMagField;
	
	//probabilities that a given star type will be in binary, trinary, or quad system.
	private double binaryProb;
	private double trinaryProb;
	private double quadProb;	
	
	private String color;	
	private ArrayList<Float> RGBColorVals;// = new ArrayList<Float>();
	private ArrayList<Float> RGBGlowColorVals;// = new ArrayList<Float>();
	
	private float displaySize; //world coordinate size units (scaled to 1)
	
	private HashMap<String, String> textures = new HashMap<String, String>();
	
	
	public StarTypeData(String starTypeName) {
		this.name = starTypeName;
	}
	
	public String getName() {
		return this.name;
	}
	
	public double getMaxLuminance() {
		return maxLuminance;
	}

	public void setMaxLuminance(double maxLuminance) {
		this.maxLuminance = maxLuminance;
	}

	public double getMinLuminance() {
		return minLuminance;
	}

	public void setMinLuminance(double minLuminance) {
		this.minLuminance = minLuminance;
	}

	public double getMaxTemp() {
		return maxTemp;
	}

	public void setMaxTemp(double maxTemp) {
		this.maxTemp = maxTemp;
	}

	public double getMinTemp() {
		return minTemp;
	}

	public void setMinTemp(double minTemp) {
		this.minTemp = minTemp;
	}

	public double getMaxMass() {
		return maxMass;
	}

	public void setMaxMass(double maxMass) {
		this.maxMass = maxMass;
	}

	public double getMinMass() {
		return minMass;
	}

	public void setMinMass(double minMass) {
		this.minMass = minMass;
	}

	public double getMaxRadius() {
		return maxRadius;
	}

	public void setMaxRadius(double maxRadius) {
		this.maxRadius = maxRadius;
	}

	public double getMinRadius() {
		return minRadius;
	}

	public void setMinRadius(double minRadius) {
		this.minRadius = minRadius;
	}

	public double getMaxRotation() {
		return maxRotation;
	}

	public void setMaxRotation(double maxRotation) {
		this.maxRotation = maxRotation;
	}

	public double getMinRotation() {
		return minRotation;
	}

	public void setMinRotation(double minRotation) {
		this.minRotation = minRotation;
	}

	public double getMaxMagField() {
		return maxMagField;
	}

	public void setMaxMagField(double maxMagField) {
		this.maxMagField = maxMagField;
	}

	public double getMinMagField() {
		return minMagField;
	}

	public void setMinMagField(double minMagField) {
		this.minMagField = minMagField;
	}

	public double getBinaryProb() {
		return binaryProb;
	}

	public void setBinaryProb(double binaryProb) {
		this.binaryProb = binaryProb;
	}

	public double getTrinaryProb() {
		return trinaryProb;
	}

	public void setTrinaryProb(double trinaryProb) {
		this.trinaryProb = trinaryProb;
	}

	public double getQuadProb() {
		return quadProb;
	}

	public void setQuadProb(double quadProb) {
		this.quadProb = quadProb;
	}

	public double getYoungProb() {
		return youngProb;
	}

	public void setYoungProb(double youngProb) {
		this.youngProb = youngProb;
	}

	public double getAverageProb() {
		return averageProb;
	}

	public void setAverageProb(double averageProb) {
		this.averageProb = averageProb;
	}

	public double getOldProb() {
		return oldProb;
	}

	public void setOldProb(double oldProb) {
		this.oldProb = oldProb;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public ArrayList<Float> getRGBColorVals() {
		return RGBColorVals;
	}

	public void setRGBColorVals(ArrayList<Float> rgbColorVals) {
		RGBColorVals = rgbColorVals;
	}
	
	public ArrayList<Float> getRGBGlowColorVals() {
		return RGBGlowColorVals;
	}
	
	public void setRGBGlowColorVals(ArrayList<Float> rgbGlowColorVals) {
		RGBGlowColorVals = rgbGlowColorVals;
	}

	public float getDisplaySize() {
		return displaySize;
	}

	public void setDisplaySize(float displaySize) {
		this.displaySize = displaySize;
	}
	
	public HashMap<String, String> getTextures() {
		return this.textures;
	}
	
	public String getTexture(String name) {
		return this.textures.get(name);
	}
	
	public void addTexture(String name, String material) {
		this.textures.put(name, material);
	}
	
	
	
	
	
	

}
